import { deepImport, camelCase, titleCase } from '../../utils/index.js'
import { Schema, model } from 'mongoose'

// 导入表字段
const collections = await deepImport('db/schema')

const modules = {}
for (const name in collections) {
  if (Object.hasOwnProperty.call(collections, name)) {
    const modelName = titleCase(camelCase(name.split('.')[0].replace('common', ''), '/')) // /转驼峰 & 首字母大写
    // mongoDB collection
    const __schema = new Schema(collections[name]) // 建表
    useMiddleware(modelName, __schema) // 添加中间件 （注意：先加注册中间件）
    modules[modelName] = model(modelName, __schema) // 建模型 （注意：后建模）
    // or mysqlDB collection
    // ...
  }
}

function useMiddleware(modelName, schema) {
  schema.pre('save', async function () {
    const model = modules[modelName]
    // 添加自增序号
    if (this.isNew) {
      const doc = await model.findOne({}).sort({ No: -1 })
      this.No = doc ? (doc.No ?? 0) + 1 : 1
    }
    // 添加当前时间
    this.time = new Date().toLocaleString()
  })
}

export default modules
